package net.sf.lab3f.ftp;
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.util.Properties;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPSClient;
import net.sf.lab3f.osgi.Ftpable;
public class Connector implements Ftpable{
private Properties props = new Properties();
public void start () throws Exception{
props.load(new FileInputStream("conf/ftp.properties"));
}
public java.io.OutputStream openOutputStream(String user) throws IOException, NoSuchAlgorithmException {
return openOutputStream(user, false);
}
public java.io.OutputStream openOutputStream(String user, boolean secure) throws IOException, NoSuchAlgorithmException {
FTPClient ftp = !secure ? new FTPClient() : new FTPSClient("TLS");
System.out.println(user);
System.out.println(secure);
String host = props.getProperty(user + ".host");
String login = props.getProperty(user + ".login");
String passwd = props.getProperty(user + ".passwd");
String dir = props.getProperty(user + ".dir");
String fileName = props.getProperty(user + ".file");
ftp.connect(host);
ftp.login(login, passwd);
ftp.enterLocalPassiveMode();
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
OutputStream out = ftp.storeFileStream(dir + '/' + fileName);
// new Thread(new Closer(ftp, out)).start();
System.out.println("FTP stream is open" + (secure ? " (secure)." : "."));
return out;
}
private class Closer implements Runnable{
FTPClient ftp; OutputStream out;
Closer(FTPClient f, OutputStream o){ftp = f;out = o;}
public void run(){
try{
Thread.sleep(20000);
out.close();
ftp.logout();
ftp.disconnect();
System.out.println("FTP connection closed.");
}
catch(Exception ex){System.out.println("FTP exception: " + ex);}
}
}
/*
public javax.microedition.io.Connection open(String s){return null;}
public javax.microedition.io.Connection open(String s, int mode){return null;}
public javax.microedition.io.Connection open(String s, int mode, boolean timeout){return null;}
public java.io.DataInputStream openDataInputStream(String s){return null;}
public java.io.DataOutputStream openDataOutputStream(String s){return null;}
public java.io.InputStream openInputStream(String s){return null;}
*/
}